home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / CUGUK / PROG_TOO / C013.ZIP / TOUCH.C < prev    next >
Text File  |  1990-01-19  |  2KB  |  74 lines

  1. /********************************************************************
  2.  * C Users Group (U.K) C Source Code Library File CUGLIB.013        *
  3.  * Inquiries to: M. Houston, 36 Whetstone Clo. Farquhar Rd.         *
  4.  * Edgbaston, Birmingham B15 2QN ENGLAND                *
  5.  ********************************************************************
  6.  * File name: touch.c
  7.  * Program name:touch 
  8.  * Source of file: Ron Wellstead
  9.  * Purpose: An MS-DOS copy of the UNIX utility of the same name.
  10.  * Changes: <who what when & why major changes have been made>      
  11.  ********************************************************************/
  12.  
  13. /*
  14.  *
  15.  *    @(#) touch.c 1.2 87/07/27 
  16.  *
  17.  *    UNIX style touch utility for dos
  18.  *
  19.  *    copyright (c) 1987 Ron Wellsted.
  20.  *    This software is provided on the understanding that it is
  21.  *    NOT to be used for commercial gain. It may be freely distributed
  22.  *    in source or object form among amateur and hobby computer users ONLY!
  23.  *
  24.  *    sets the modification time of file(s) to the current time.
  25.  *    usage:    touch files -c files
  26.  *    any file names given after the -c switch will be created if not present
  27.  *    written for Microsoft C, link with setargv.obj to expand wildcards
  28.  */
  29. #include    <stdio.h>
  30. #include    <stdlib.h>
  31. #include    <errno.h>
  32.  
  33. char what[]="@(#) touch VR 1.0.0 15 Jul 1987";
  34.  
  35. #define    TRUE    1
  36. #define    FALSE    0
  37.  
  38. extern int errno;
  39. FILE *stream;
  40.  
  41. main(argc,argv)
  42. int argc;
  43. char *argv[];
  44. {
  45.     char *ptr;
  46.     int i,create=FALSE;
  47.  
  48.     if (argc<2) {
  49.         printf("Usage : touch filespec... [-c filespec...]\n");
  50.         exit();
  51.     }
  52.     for (i=1;i<argc;i++) {
  53.         ptr=argv[i];
  54.         if ((*ptr=='-')||(*ptr=='/')) {
  55.             ++ptr;
  56.             if (tolower(*ptr)=='c') create=TRUE;
  57.             continue;
  58.         }
  59.         printf("%s",ptr);
  60.         if (utime(ptr,NULL)==-1) {
  61.             if ((errno==ENOENT)&&(create)) {
  62.                 if ((stream=fopen(ptr,"w"))==NULL)
  63.                     perror(" : Not created ");
  64.                 else fclose(stream);
  65.                 printf(" : created\n");
  66.                 continue;
  67.             }
  68.             perror(" : Not modified ");
  69.             continue;
  70.         }
  71.         printf(" : modified\n");
  72.     }
  73. }
  74.